﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using BUS;
using DTO;

namespace WindowsFormsApplication1
{
    public partial class HoaDon : Form
    {
        public HoaDon()
        {
            InitializeComponent();
        }



        // KHỞI TẠO


        HoaDon_DTO ec = new HoaDon_DTO();
        HoaDon_BUS bus = new HoaDon_BUS();
        int nhanbiet = 0;

        //MỞ KHÓA KHÓA ĐIỀU KHIỂN VÀ LÀM MỚI-----------------------------------------

        public void KhoaDieuKhien()
        {
            txtMaHD.Enabled = false;
            dtPicker.Enabled = false;
            txtTongTien.Enabled = false;

            btnThem.Enabled = true;
            btnSua.Enabled = true;
            btnXoa.Enabled = true;
            btnLuu.Enabled = false;
            btnHuy.Enabled = false;

        }

        public void MoDieuKhien()
        {
            txtMaHD.Enabled = true;
            dtPicker.Enabled = true;
            txtTongTien.Enabled = true;

            //btnThem.Enabled = false;
            btnSua.Enabled = false;
            btnXoa.Enabled = false;
            btnLuu.Enabled = true;
        }

        public void SetNull()
        {
            txtMaHD.Text = "";
            dtPicker.Value = dtPicker.MinDate;
            txtTongTien.Text = "";
        }

        //XỬ LÝ SỰ KIỆN FORMLOAD VÀ 5 NÚT CHỨC NĂNG CHÍNH----------------------------

        private void HDon_Load(object sender, EventArgs e)
        {
            KhoaDieuKhien();
            HienThi("");
        }



        private void btnThem_Click(object sender, EventArgs e)
        {
            MoDieuKhien();
            btnHuy.Enabled = true;
            txtMaHD.Enabled = false;
            msds.Enabled = false;
            btnThem.Enabled = false;
            txtTongTien.Enabled = false;
            nhanbiet = 1;
            dtPicker.Value = DateTime.Now;
            txtTongTien.Text = "0";
            MaTuTang();
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            if (txtMaHD.Text == "")
                MessageBox.Show("Chọn Mã HD cần sửa", "Thông báo");
            else
            {
                MoDieuKhien();
                btnHuy.Enabled = true;
                txtMaHD.Text = msds.CurrentRow.Cells[0].Value.ToString();
                dtPicker.Value = DateTime.Parse(msds.CurrentRow.Cells[1].Value.ToString());
                txtTongTien.Text = msds.CurrentRow.Cells[2].Value.ToString();
                txtMaHD.Enabled = false;
                btnThem.Enabled = false;
                msds.Enabled = false;
                txtTongTien.Enabled = false;
                HienThi("");
                nhanbiet = 2;
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (txtMaHD.Text == "")
                MessageBox.Show("Chọn Mã HD cần xóa", "Thông báo");
            else
            {
                ec.MaHD = txtMaHD.Text;
                bus.XoaDuLieu(ec);
                MessageBox.Show("Xóa thành công HD có Mã HD :" + txtMaHD.Text, "Thông Báo");
                HienThi("");
                KhoaDieuKhien();
                SetNull();
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            SetNull();
            KhoaDieuKhien();
            msds.Enabled = true;
            nhanbiet = 0;
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (txtMaHD.Text == "")
            {
                MessageBox.Show("Nhập đủ thông tin!");
                return;
            }
            if (nhanbiet == 1) // Thêm
            {
                ec.MaHD = txtMaHD.Text;
                ec.NgayHD = dtPicker.Value;
                ec.TongTien = double.Parse(txtTongTien.Text);
                HoaDon_BUS.ThemDuLieu(ec);
                //bus.ThemDuLieu(ec);

                SetNull();
                KhoaDieuKhien();
                HienThi(""); //reload lại thông tin

                MessageBox.Show("Thêm thành công vào CSDL");

            }
            else if (nhanbiet == 2) // Sửa
            {
                ec.MaHD = txtMaHD.Text;
                ec.NgayHD = dtPicker.Value;
                ec.TongTien = double.Parse(txtTongTien.Text);

                HoaDon_BUS.SuaDuLieu(ec);
                SetNull();
                KhoaDieuKhien();
                HienThi(""); //reload lại thông tin
                MessageBox.Show("Đã sửa thành công", "Thông Báo");

            }
            nhanbiet = 0;
            msds.Enabled = true;
            SetNull();
        }

        //---------------------------------------------------------------------------

        //XỬ LÝ SỰ KIỆN CELLCLICK----------------------------------------------------

        private void msds_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (nhanbiet == 0)
            {
                int dong = e.RowIndex;
                txtMaHD.Text = msds.CurrentRow.Cells[0].Value.ToString();
                dtPicker.Value = DateTime.Parse(msds.CurrentRow.Cells[1].Value.ToString());
                txtTongTien.Text = msds.CurrentRow.Cells[2].Value.ToString();
            }
            else
                msds.Enabled = false;
        }

        //---------------------------------------------------------------------------


        //SỰ KIỆN LIÊN QUAN VỀ TÌM KIẾM----------------------------------------------

        private void txtTimKiem_TextChanged(object sender, EventArgs e)
        {
            string query;
            query = "Where MaHD like '" + txtTimKiem.Text + "%' or MaHD like '%" + txtTimKiem.Text + "'";
            HienThi(query);
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            txtTimKiem.Text = "";
        }

        //---------------------------------------------------------------------------

        //KIỂM TRA TỔNG TIỀN --------------------------------------------------------

        private void txtTongTien_TextChanged(object sender, EventArgs e)
        {
            try
            {
                ec.TongTien = double.Parse(txtTongTien.Text);

            }
            catch
            {
                //MessageBox.Show("Nhập sai!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtTongTien.Text = "0";
            }
        }

        //---------------------------------------------------------------------------

        //FUNCTION-- HIỂN THỊ VÀ TỰ ĐỘNG TĂNG MÃ-------------------------------------


        private void MaTuTang()
        {

            string st = "";
            if (msds.RowCount <= 0)
            {
                st = "HD0001";
            }
            else
            {
                int k;
                st = "HD";
                //MessageBox.Show("Dữ Liệu " + msds.Rows[0].Cells[0].Value);
                k = Convert.ToInt32(msds.Rows[msds.RowCount - 1].Cells[0].Value.ToString().Substring(2, 4));
                k = k + 1;
                if (k < 10)
                    st = st + "000";
                else if (k < 100)
                    st = st + "00";
                else if (k < 1000)
                    st = st + "0";
                st = st + k;
                //MessageBox.Show("Chạy hàm thành công","Thông báo");
            }
            txtMaHD.Text = st;
        }

        public void HienThi(string where)
        {
            msds.DataSource = bus.LayDuLieu(where);
        }

        

       

        





        //---------------------------------------------------------------------------


    }
}